
#include "procbar.h"

#define SIZE 101
#define FILL '='
#define COLFILL ' '
#define COLOR_COLFILL BG_RED

//.autorelabel#define FILESIZE 1024.0
//#define SPEED 1


void test_color()
{
  // 输出不同颜色的文本
    printf(COLOR_RED "这是红色文本" COLOR_RESET "\n");
    printf(COLOR_GREEN "这是绿色文本" COLOR_RESET "\n");
    printf(COLOR_YELLOW "这是黄色文本" COLOR_RESET "\n");
    printf(COLOR_BLUE "这是蓝色文本" COLOR_RESET "\n");
    
    // 组合样式和颜色
    printf(TEXT_BOLD COLOR_CYAN "这是粗体青色文本" COLOR_RESET "\n");
    printf(TEXT_UNDER COLOR_MAGENTA "这是带下划线的洋红色文本" COLOR_RESET "\n");
    
    // 使用背景色
    printf(BG_RED COLOR_WHITE "这是白色文字红色背景" COLOR_RESET "\n");
}




void flushprocess(double tatol ,double src)
{
  if(tatol<src)
    src=tatol;
  double rate=(src/tatol)*100;
  char ch[SIZE];
  int i=0;
  for(;i<=100;i++)
    ch[i]=COLFILL;
  
  int int_rate=(int)rate;
  i=0;
  
  //for(;i<int_rate;i++)
    //ch[i]=COLFILL;
 
  static int count=0;

  char fh[]="|/-\\";
  int len=strlen(fh);
 // printf("[%-100s]""["COLOR_RED"%.1f%%"COLOR_RESET"][%c]\r",ch,rate,fh[count++]);

  //printf("[%-100s][",ch);
  //printf(COLOR_RED "%.1f%%" COLOR_RESET,rate);
  //printf("][%c]\r",fh[count++]);

  printf("[");

  //printf(BG_RED "%-100s" COLOR_RESET,ch);

  i=0;
  while(i<int_rate)
  {
    printf(COLOR_COLFILL "%c" COLOR_RESET,ch[i]);
    ++i;
  }
  while(i<100)
  {
    printf("%c",ch[i]);
    ++i;
  }


  printf("][");
  
  printf(COLOR_RED "%.1f%%" COLOR_RESET,rate);
  printf("][%c]\r",fh[count++]);


  fflush(stdout);
  count%=len;
}

double addcnt(double src,double range)
{
  int int_range=(int)range;
  return src+rand()%int_range+(range-int_range);
}




void flushprocess_writ(double tatol ,double src)
{
  if(tatol<src)
    src=tatol;
  double rate=(src/tatol)*100;
  char ch[SIZE];
  int i=0;
  for(;i<=100;i++)
    ch[i]='\0';
  
  int int_rate=(int)rate;
  i=0;
  for(;i<int_rate;i++)
    ch[i]=FILL;
 
  static int count=0;

  char fh[]="|/-\\";
  int len=strlen(fh);
 // printf("[%-100s]""["COLOR_RED"%.1f%%"COLOR_RESET"][%c]\r",ch,rate,fh[count++]);

  printf("[%-100s][",ch);
  printf(COLOR_RED "%.1f%%" COLOR_RESET,rate);
  printf("][%c]\r",fh[count++]);

   fflush(stdout);
  count%=len;
}





void downlowd(int filesize,backfunc bc)
{
   srand(time(NULL));
   int cnt=0;
   while(1)
   {
     if(cnt>=filesize)
     {
       flushprocess(filesize,cnt);
       printf("\n");
       break;
     }
     flushprocess(filesize,cnt);
     usleep(30000); 
     cnt=addcnt(cnt,25.3); 
   }
    return;
}






void process()
{
  char ch[SIZE];
  int i=0;

  for(;i<=100;i++)
  {
    ch[i]='\0';
  }
  
  int cnt=0;

  char fh[]="|/-\\";
  int len=strlen(fh);

  while(cnt<=100)
  {
    printf("[%-100s][%d%%][%c]\r",ch,cnt,fh[cnt%len]);
    fflush(stdout);
    ch[cnt]=FILL;

    usleep(50000);

    cnt+=1;

  }
  printf("\n");

}
